home *** CD-ROM | disk | FTP | other *** search
/ Plug-In Power Pack for Netscape Communicator / Plug-In Power Pack for Netscape Communicator.iso / plugins / dataviews / include / fdsevall.h < prev    next >
C/C++ Source or Header  |  1997-05-08  |  13KB  |  631 lines

  1. # include "stdio.h"
  2. # define U(x) x
  3. # define NLSTATE yyprevious=YYNEWLINE
  4. # define BEGIN yybgin = yysvec + 1 +
  5. # define INITIAL 0
  6. # define YYLERR yysvec
  7. # define YYSTATE (yyestate-yysvec-1)
  8. # define YYOPTIM 1
  9. # define YYLMAX BUFSIZ
  10. # define output(c) putc(c,yyout)
  11. # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
  12. # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
  13. # define yymore() (yymorfg=1)
  14. # define ECHO fprintf(yyout, "%s",yytext)
  15. # define REJECT { nstr = yyreject(); goto yyfussy;}
  16. int yyleng; extern char yytext[];
  17. int yymorfg;
  18. extern char *yysptr, yysbuf[];
  19. int yytchar;
  20. #if ( defined(WINNT) && defined (_DLL) )
  21. FILE *yyin = 0, *yyout = 0;
  22. #else
  23. FILE *yyin = {stdin}, *yyout = {stdout};
  24. #endif
  25. extern int yylineno;
  26. struct yysvf { 
  27.     struct yywork *yystoff;
  28.     struct yysvf *yyother;
  29.     int *yystops;};
  30. struct yysvf *yyestate;
  31. extern struct yysvf yysvec[], *yybgin;
  32. static char SccsId_lex[]="@(#)FDSeval.l    V1.6    3/30/92";
  33.  
  34. /* Trick lex into getting input from the expression string */
  35. /* String to be parsed */
  36. LOCAL CHAR *expression;
  37. LOCAL CHAR *ExpStart;
  38.  
  39. #undef input
  40. #define input() (*expression++)
  41.  
  42. #undef unput
  43. #define unput(c) (*--expression = c)
  44.  
  45. # define INCLUDE 2
  46. # define YYNEWLINE 10
  47. int yylex(){
  48. int nstr; 
  49. while((nstr = yylook()) >= 0)
  50. yyfussy: switch(nstr){
  51. case 0:
  52. if(yywrap()) return(0); break;
  53. case 1:
  54. { /* Include a file of expressions */
  55.         (VOID)S_STRCPY( id, &yytext[1] ); /* Skip the '!' */
  56.         if( debug ) (VOID)S_PRINTF("include file: %s\n", id );
  57.         return INCLUDE_FILE;
  58.         }
  59. break;
  60. case 2:
  61.     {
  62.         (VOID)S_SSCANF( &yytext[1], "%d", &CurrentArgIndex );
  63.         if( debug )
  64.           (VOID)S_PRINTF("Dsvar[%d] ", CurrentArgIndex );
  65.         return EXPR_ARG_MARKER;
  66.         }
  67. break;
  68. case 3:
  69. {
  70.         (VOID)S_STRCPY( id, yytext );
  71.         if( debug ) (VOID)S_PRINTF("<%s> ", id );
  72.         return ID;
  73.         }
  74. break;
  75. case 4:
  76.  {
  77.         (VOID)S_SSCANF( yytext, "%lf", &number );
  78.         if( debug ) (VOID)S_PRINTF("%f ", number );
  79.         return EVAL_NUMBER;
  80.         }
  81. break;
  82. case 5:
  83.  {
  84.         long i;
  85.         
  86.         (VOID)S_SSCANF( &yytext[2], "%lx", &i );
  87.         number = (double)i;
  88.         if( debug ) (VOID)S_PRINTF("%f ", number );
  89.         return EVAL_NUMBER;
  90.         }
  91. break;
  92. case 6:
  93. { /* C-style comment */
  94.         if( yytext[yyleng-1] == '*' )
  95.            yymore();
  96.         /* else ; */
  97.         }
  98. break;
  99. case 7:
  100.     {
  101.         if( debug ) (VOID)S_PRINTF("EQ " );
  102.         return EQ;
  103.         }
  104. break;
  105. case 8:
  106.     {
  107.         if( debug ) (VOID)S_PRINTF("NE " );
  108.         return NE;
  109.         }
  110. break;
  111. case 9:
  112.     {
  113.         if( debug ) (VOID)S_PRINTF("LE " );
  114.         return LE;
  115.         }
  116. break;
  117. case 10:
  118.     {
  119.         if( debug ) (VOID)S_PRINTF("LT " );
  120.         return LT;
  121.         }
  122. break;
  123. case 11:
  124.     {
  125.         if( debug ) (VOID)S_PRINTF("GE " );
  126.         return GE;
  127.         }
  128. break;
  129. case 12:
  130.     {
  131.         if( debug ) (VOID)S_PRINTF("GT " );
  132.         return GT;
  133.         }
  134. break;
  135. case 13:
  136.        ;
  137. break;
  138. case 14:
  139.     {
  140.         if( debug ) (VOID)S_PRINTF("\n" );
  141.         return TERMINATOR;
  142.         }
  143. break;
  144. case 15:
  145.     {
  146.         if( debug ) (VOID)S_PRINTF("'%c' ", yytext[0] );
  147.         return yytext[0];
  148.         }
  149. break;
  150. case -1:
  151. break;
  152. default:
  153. fprintf(yyout,"bad switch yylook %d",nstr);
  154. } return(0); }
  155. /* end of yylex */
  156.  
  157. INT yywrap() { return 1; }
  158. int yyvstop[] = {
  159. 0,
  160.  
  161. 15,
  162. 0,
  163.  
  164. 13,
  165. 15,
  166. 0,
  167.  
  168. 13,
  169. 0,
  170.  
  171. 15,
  172. 0,
  173.  
  174. 15,
  175. 0,
  176.  
  177. 4,
  178. 15,
  179. 0,
  180.  
  181. 15,
  182. 0,
  183.  
  184. 4,
  185. 15,
  186. 0,
  187.  
  188. 4,
  189. 15,
  190. 0,
  191.  
  192. 14,
  193. 15,
  194. 0,
  195.  
  196. 10,
  197. 15,
  198. 0,
  199.  
  200. 15,
  201. 0,
  202.  
  203. 12,
  204. 15,
  205. 0,
  206.  
  207. 3,
  208. 15,
  209. 0,
  210.  
  211. 1,
  212. 0,
  213.  
  214. 8,
  215. 0,
  216.  
  217. 2,
  218. 0,
  219.  
  220. 4,
  221. 0,
  222.  
  223. 4,
  224. 0,
  225.  
  226. 9,
  227. 0,
  228.  
  229. 7,
  230. 0,
  231.  
  232. 11,
  233. 0,
  234.  
  235. 3,
  236. 0,
  237.  
  238. 4,
  239. 0,
  240.  
  241. 5,
  242. 0,
  243.  
  244. 6,
  245. 0,
  246. 0};
  247. # define YYTYPE char
  248. struct yywork { YYTYPE verify, advance; } yycrank[] = {
  249. 0,0,    0,0,    1,5,    0,0,    
  250. 0,0,    0,0,    0,0,    0,0,    
  251. 0,0,    0,0,    1,6,    1,7,    
  252. 6,7,    6,7,    0,0,    0,0,    
  253. 0,0,    0,0,    0,0,    0,0,    
  254. 0,0,    0,0,    0,0,    0,0,    
  255. 0,0,    0,0,    0,0,    0,0,    
  256. 0,0,    0,0,    0,0,    0,0,    
  257. 0,0,    0,0,    1,8,    6,7,    
  258. 0,0,    1,9,    0,0,    0,0,    
  259. 0,0,    2,8,    0,0,    0,0,    
  260. 2,9,    11,25,    0,0,    1,10,    
  261. 1,11,    1,12,    1,13,    3,8,    
  262. 34,34,    0,0,    3,9,    4,8,    
  263. 0,0,    34,36,    4,9,    0,0,    
  264. 1,14,    1,15,    1,16,    1,17,    
  265. 15,28,    16,29,    1,18,    2,14,    
  266. 2,15,    2,16,    2,17,    17,30,    
  267. 1,18,    0,0,    0,0,    0,0,    
  268. 0,0,    3,14,    3,15,    3,16,    
  269. 3,17,    4,14,    4,15,    4,16,    
  270. 4,17,    8,19,    8,19,    8,19,    
  271. 8,19,    8,19,    8,19,    8,19,    
  272. 8,19,    8,19,    8,19,    8,19,    
  273. 8,19,    0,0,    0,0,    0,0,    
  274. 8,20,    0,0,    0,0,    0,0,    
  275. 8,19,    8,19,    8,19,    8,19,    
  276. 8,19,    8,19,    8,19,    8,19,    
  277. 8,19,    8,19,    8,19,    8,19,    
  278. 8,19,    8,19,    8,19,    8,19,    
  279. 8,19,    8,19,    8,19,    8,19,    
  280. 8,19,    8,19,    8,19,    8,19,    
  281. 8,19,    8,19,    0,0,    0,0,    
  282. 0,0,    0,0,    8,19,    0,0,    
  283. 8,19,    8,19,    8,19,    8,19,    
  284. 8,19,    8,19,    8,19,    8,19,    
  285. 8,19,    8,19,    8,19,    8,19,    
  286. 8,19,    8,19,    8,19,    8,19,    
  287. 8,19,    8,19,    8,19,    8,19,    
  288. 8,19,    8,19,    8,19,    8,19,    
  289. 8,19,    8,19,    0,0,    0,0,    
  290. 0,0,    8,21,    9,22,    9,22,    
  291. 9,22,    9,22,    9,22,    9,22,    
  292. 9,22,    9,22,    9,22,    10,23,    
  293. 10,23,    10,23,    10,23,    10,23,    
  294. 10,23,    10,23,    10,23,    10,23,    
  295. 10,23,    32,33,    32,33,    32,33,    
  296. 32,33,    32,33,    32,33,    32,33,    
  297. 32,33,    32,33,    32,33,    12,23,    
  298. 10,24,    12,26,    12,26,    12,26,    
  299. 12,26,    12,26,    12,26,    12,26,    
  300. 12,26,    12,26,    12,26,    0,0,    
  301. 0,0,    0,0,    0,0,    0,0,    
  302. 0,0,    0,0,    0,0,    0,0,    
  303. 0,0,    0,0,    12,24,    0,0,    
  304. 0,0,    0,0,    0,0,    0,0,    
  305. 0,0,    0,0,    0,0,    13,23,    
  306. 10,24,    13,26,    13,26,    13,26,    
  307. 13,26,    13,26,    13,26,    13,26,    
  308. 13,26,    13,26,    13,26,    0,0,    
  309. 0,0,    0,0,    0,0,    0,0,    
  310. 0,0,    0,0,    0,0,    0,0,    
  311. 0,0,    0,0,    12,24,    0,0,    
  312. 0,0,    18,31,    18,31,    18,31,    
  313. 18,31,    18,31,    18,31,    18,31,    
  314. 18,31,    18,31,    18,31,    0,0,    
  315. 0,0,    0,0,    0,0,    0,0,    
  316. 0,0,    12,27,    18,31,    18,31,    
  317. 18,31,    18,31,    18,31,    18,31,    
  318. 18,31,    18,31,    18,31,    18,31,    
  319. 18,31,    18,31,    18,31,    18,31,    
  320. 18,31,    18,31,    18,31,    18,31,    
  321. 18,31,    18,31,    18,31,    18,31,    
  322. 18,31,    18,31,    18,31,    18,31,    
  323. 0,0,    0,0,    0,0,    0,0,    
  324. 18,31,    0,0,    18,31,    18,31,    
  325. 18,31,    18,31,    18,31,    18,31,    
  326. 18,31,    18,31,    18,31,    18,31,    
  327. 18,31,    18,31,    18,31,    18,31,    
  328. 18,31,    18,31,    18,31,    18,31,    
  329. 18,31,    18,31,    18,31,    18,31,    
  330. 18,31,    18,31,    18,31,    18,31,    
  331. 19,19,    19,19,    19,19,    19,19,    
  332. 19,19,    19,19,    19,19,    19,19,    
  333. 19,19,    19,19,    19,19,    19,19,    
  334. 0,0,    0,0,    0,0,    0,0,    
  335. 0,0,    0,0,    0,0,    19,19,    
  336. 19,19,    19,19,    19,19,    19,19,    
  337. 19,19,    19,19,    19,19,    19,19,    
  338. 19,19,    19,19,    19,19,    19,19,    
  339. 19,19,    19,19,    19,19,    19,19,    
  340. 19,19,    19,19,    19,19,    19,19,    
  341. 19,19,    19,19,    19,19,    19,19,    
  342. 19,19,    0,0,    0,0,    0,0,    
  343. 0,0,    19,19,    0,0,    19,19,    
  344. 19,19,    19,19,    19,19,    19,19,    
  345. 19,19,    19,19,    19,19,    19,19,    
  346. 19,19,    19,19,    19,19,    19,19,    
  347. 19,19,    19,19,    19,19,    19,19,    
  348. 19,19,    19,19,    19,19,    19,19,    
  349. 19,19,    19,19,    19,19,    19,19,    
  350. 19,19,    24,32,    0,0,    0,0,    
  351. 24,33,    24,33,    24,33,    24,33,    
  352. 24,33,    24,33,    24,33,    24,33,    
  353. 24,33,    24,33,    25,25,    0,0,    
  354. 0,0,    0,0,    0,0,    0,0,    
  355. 0,0,    0,0,    25,25,    25,25,    
  356. 26,23,    0,0,    26,26,    26,26,    
  357. 26,26,    26,26,    26,26,    26,26,    
  358. 26,26,    26,26,    26,26,    26,26,    
  359. 0,0,    0,0,    0,0,    0,0,    
  360. 0,0,    0,0,    0,0,    0,0,    
  361. 0,0,    0,0,    0,0,    0,0,    
  362. 0,0,    0,0,    0,0,    0,0,    
  363. 0,0,    0,0,    0,0,    25,34,    
  364. 0,0,    0,0,    0,0,    25,25,    
  365. 25,0,    25,25,    25,25,    0,0,    
  366. 0,0,    0,0,    0,0,    0,0,    
  367. 27,35,    27,35,    27,35,    27,35,    
  368. 27,35,    27,35,    27,35,    27,35,    
  369. 27,35,    27,35,    25,25,    0,0,    
  370. 0,0,    0,0,    0,0,    0,0,    
  371. 25,25,    27,35,    27,35,    27,35,    
  372. 27,35,    27,35,    27,35,    0,0,    
  373. 0,0,    0,0,    0,0,    0,0,    
  374. 0,0,    0,0,    0,0,    0,0,    
  375. 0,0,    0,0,    0,0,    0,0,    
  376. 0,0,    0,0,    0,0,    0,0,    
  377. 0,0,    0,0,    0,0,    0,0,    
  378. 0,0,    0,0,    0,0,    0,0,    
  379. 0,0,    27,35,    27,35,    27,35,    
  380. 27,35,    27,35,    27,35,    0,0,    
  381. 0,0};
  382. struct yysvf yysvec[] = {
  383. 0,    0,    0,
  384. yycrank+-1,    0,        0,    
  385. yycrank+-8,    yysvec+1,    0,    
  386. yycrank+-18,    yysvec+1,    0,    
  387. yycrank+-22,    yysvec+1,    0,    
  388. yycrank+0,    0,        yyvstop+1,
  389. yycrank+3,    0,        yyvstop+3,
  390. yycrank+0,    yysvec+6,    yyvstop+6,
  391. yycrank+39,    0,        yyvstop+8,
  392. yycrank+117,    0,        yyvstop+10,
  393. yycrank+127,    0,        yyvstop+12,
  394. yycrank+3,    0,        yyvstop+15,
  395. yycrank+149,    0,        yyvstop+17,
  396. yycrank+181,    yysvec+10,    yyvstop+20,
  397. yycrank+0,    0,        yyvstop+23,
  398. yycrank+3,    0,        yyvstop+26,
  399. yycrank+4,    0,        yyvstop+29,
  400. yycrank+10,    0,        yyvstop+31,
  401. yycrank+205,    0,        yyvstop+34,
  402. yycrank+282,    0,        yyvstop+37,
  403. yycrank+0,    0,        yyvstop+39,
  404. yycrank+0,    yysvec+19,    0,    
  405. yycrank+0,    0,        yyvstop+41,
  406. yycrank+0,    yysvec+10,    yyvstop+43,
  407. yycrank+360,    0,        0,    
  408. yycrank+-417,    0,        0,    
  409. yycrank+382,    yysvec+10,    yyvstop+45,
  410. yycrank+424,    0,        0,    
  411. yycrank+0,    0,        yyvstop+47,
  412. yycrank+0,    0,        yyvstop+49,
  413. yycrank+0,    0,        yyvstop+51,
  414. yycrank+0,    yysvec+18,    yyvstop+53,
  415. yycrank+137,    0,        0,    
  416. yycrank+0,    yysvec+32,    yyvstop+55,
  417. yycrank+-10,    yysvec+25,    0,    
  418. yycrank+0,    yysvec+27,    yyvstop+57,
  419. yycrank+0,    0,        yyvstop+59,
  420. 0,    0,    0};
  421. struct yywork *yytop = yycrank+526;
  422. struct yysvf *yybgin = yysvec+1;
  423. char yymatch[] = {
  424. 00  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  425. 01  ,011 ,012 ,01  ,01  ,01  ,01  ,01  ,
  426. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  427. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  428. 011 ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  429. 01  ,01  ,01  ,01  ,01  ,01  ,'.' ,'/' ,
  430. '0' ,'1' ,'1' ,'1' ,'1' ,'1' ,'1' ,'1' ,
  431. '1' ,'1' ,01  ,01  ,01  ,01  ,01  ,01  ,
  432. 01  ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'G' ,
  433. 'G' ,'G' ,'G' ,'G' ,'G' ,'G' ,'G' ,'G' ,
  434. 'G' ,'G' ,'G' ,'G' ,'G' ,'G' ,'G' ,'G' ,
  435. 'G' ,'G' ,'G' ,01  ,01  ,01  ,01  ,'G' ,
  436. 01  ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'G' ,
  437. 'G' ,'G' ,'G' ,'G' ,'G' ,'G' ,'G' ,'G' ,
  438. 'G' ,'G' ,'G' ,'G' ,'G' ,'G' ,'G' ,'G' ,
  439. 'G' ,'G' ,'G' ,01  ,01  ,01  ,01  ,01  ,
  440. 0};
  441. char yyextra[] = {
  442. 0,0,0,0,0,0,0,0,
  443. 0,0,0,0,0,0,0,0,
  444. 0};
  445. #ifndef lint
  446. static    char ncform_sccsid[] = "@(#)ncform 1.6 88/02/08 SMI"; /* from S5R2 1.2 */
  447. #endif
  448.  
  449. int yylineno =1;
  450. # define YYU(x) x
  451. # define NLSTATE yyprevious=YYNEWLINE
  452. char yytext[YYLMAX];
  453. struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
  454. char yysbuf[YYLMAX];
  455. char *yysptr = yysbuf;
  456. int *yyfnd;
  457. extern struct yysvf *yyestate;
  458. int yyprevious = YYNEWLINE;
  459. int yylook(){
  460.     register struct yysvf *yystate, **lsp;
  461.     register struct yywork *yyt;
  462.     struct yysvf *yyz;
  463.     int yych, yyfirst;
  464.     struct yywork *yyr;
  465. # ifdef LEXDEBUG
  466.     int debug;
  467. # endif
  468.     char *yylastch;
  469.     /* start off machines */
  470. # ifdef LEXDEBUG
  471.     debug = 0;
  472. # endif
  473.     yyfirst=1;
  474.     if (!yymorfg)
  475.         yylastch = yytext;
  476.     else {
  477.         yymorfg=0;
  478.         yylastch = yytext+yyleng;
  479.         }
  480.     for(;;){
  481.         lsp = yylstate;
  482.         yyestate = yystate = yybgin;
  483.         if (yyprevious==YYNEWLINE) yystate++;
  484.         for (;;){
  485. # ifdef LEXDEBUG
  486.             if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
  487. # endif
  488.             yyt = yystate->yystoff;
  489.             if(yyt == yycrank && !yyfirst){  /* may not be any transitions */
  490.                 yyz = yystate->yyother;
  491.                 if(yyz == 0)break;
  492.                 if(yyz->yystoff == yycrank)break;
  493.                 }
  494.             *yylastch++ = yych = input();
  495.             yyfirst=0;
  496.         tryagain:
  497. # ifdef LEXDEBUG
  498.             if(debug){
  499.                 fprintf(yyout,"char ");
  500.                 allprint(yych);
  501.                 putchar('\n');
  502.                 }
  503. # endif
  504.             yyr = yyt;
  505.             if ( (int)yyt > (int)yycrank){
  506.                 yyt = yyr + yych;
  507.                 if (yyt <= yytop && yyt->verify+yysvec == yystate){
  508.                     if(yyt->advance+yysvec == YYLERR)    /* error transitions */
  509.                         {unput(*--yylastch);break;}
  510.                     *lsp++ = yystate = yyt->advance+yysvec;
  511.                     goto contin;
  512.                     }
  513.                 }
  514. # ifdef YYOPTIM
  515.             else if((int)yyt < (int)yycrank) {        /* r < yycrank */
  516.                 yyt = yyr = yycrank+(yycrank-yyt);
  517. # ifdef LEXDEBUG
  518.                 if(debug)fprintf(yyout,"compressed state\n");
  519. # endif
  520.                 yyt = yyt + yych;
  521.                 if(yyt <= yytop && yyt->verify+yysvec == yystate){
  522.                     if(yyt->advance+yysvec == YYLERR)    /* error transitions */
  523.                         {unput(*--yylastch);break;}
  524.                     *lsp++ = yystate = yyt->advance+yysvec;
  525.                     goto contin;
  526.                     }
  527.                 yyt = yyr + YYU(yymatch[yych]);
  528. # ifdef LEXDEBUG
  529.                 if(debug){
  530.                     fprintf(yyout,"try fall back character ");
  531.                     allprint(YYU(yymatch[yych]));
  532.                     putchar('\n');
  533.                     }
  534. # endif
  535.                 if(yyt <= yytop && yyt->verify+yysvec == yystate){
  536.                     if(yyt->advance+yysvec == YYLERR)    /* error transition */
  537.                         {unput(*--yylastch);break;}
  538.                     *lsp++ = yystate = yyt->advance+yysvec;
  539.                     goto contin;
  540.                     }
  541.                 }
  542.             if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
  543. # ifdef LEXDEBUG
  544.                 if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
  545. # endif
  546.                 goto tryagain;
  547.                 }
  548. # endif
  549.             else
  550.                 {unput(*--yylastch);break;}
  551.         contin:
  552. # ifdef LEXDEBUG
  553.             if(debug){
  554.                 fprintf(yyout,"state %d char ",yystate-yysvec-1);
  555.                 allprint(yych);
  556.                 putchar('\n');
  557.                 }
  558. # endif
  559.             ;
  560.             }
  561. # ifdef LEXDEBUG
  562.         if(debug){
  563.             fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
  564.             allprint(yych);
  565.             putchar('\n');
  566.             }
  567. # endif
  568.         while (lsp-- > yylstate){
  569.             *yylastch-- = 0;
  570.             if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
  571.                 yyolsp = lsp;
  572.                 if(yyextra[*yyfnd]){        /* must backup */
  573.                     while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
  574.                         lsp--;
  575.                         unput(*yylastch--);
  576.                         }
  577.                     }
  578.                 yyprevious = YYU(*yylastch);
  579.                 yylsp = lsp;
  580.                 yyleng = yylastch-yytext+1;
  581.                 yytext[yyleng] = 0;
  582. # ifdef LEXDEBUG
  583.                 if(debug){
  584.                     fprintf(yyout,"\nmatch ");
  585.                     sprint(yytext);
  586.                     fprintf(yyout," action %d\n",*yyfnd);
  587.                     }
  588. # endif
  589.                 return(*yyfnd++);
  590.                 }
  591.             unput(*yylastch);
  592.             }
  593.         if (yytext[0] == 0  /* && feof(yyin) */)
  594.             {
  595.             yysptr=yysbuf;
  596.             return(0);
  597.             }
  598.         yyprevious = yytext[0] = input();
  599.         if (yyprevious>0)
  600.             output(yyprevious);
  601.         yylastch=yytext;
  602. # ifdef LEXDEBUG
  603.         if(debug)putchar('\n');
  604. # endif
  605.         }
  606.     }
  607. int yyback(p, m)
  608.     int *p;
  609.         int m;
  610. {
  611. if (p==0) return(0);
  612. while (*p)
  613.     {
  614.     if (*p++ == m)
  615.         return(1);
  616.     }
  617. return(0);
  618. }
  619.     /* the following are only used in the lex library */
  620. int yyinput(){
  621.     return(input());
  622.     }
  623. int yyoutput(c)
  624.   int c; {
  625.     return output(c);
  626.     }
  627. int yyunput(c)
  628.    int c; {
  629.     return unput(c);
  630.     }
  631.